'use strict';
/**默认环境配置
 * 开发和生产都会用到此配置
 */
const path = require('path');

module.exports = appInfo => {
  const config = exports = {};

  // exports.sequelize = {//已分本地开发和生产环境 
  //   dialect: 'mysql',
  //   host: '127.0.0.1', //127.0.0.1
  //   port: 3306,
  //   database: 'node',
  //   username: 'root',
  //   password: '123456',
  //   timezone: '+08:00', //解决数据库显示的时间少8个小时的问题,但是读出来的时间还是带Z和少8个小时的
  //   dialectOptions: {
  //     charset: 'utf8' //
  //   },
  // }
  // use for cookie sign key, should change to your own and keep security
  config.keys = appInfo.name + '_1539955757030_7268';

  // add your config here 
  config.middleware = ['errorHandler']; //文件名用驼峰名进行转换:这里用驼峰名,midddleware里的文件名用 error-handler.js

  config.security = {
    // csrf: false,
    //白名单
    domainWhiteList: ['http://localhost:7001','http:127.0.0.1'], // 'http://localhost','http://localhost:8080','http://106.12.192.124:7001'   
    // csrf: {
    //     enable: true,
    // },
    xframe: {
      enable: false,
    },
    csrf: {
      enable: false,
      headerName: 'csrftoken',
      ignoreJSON: false, // 默认为 false，当设置为 true 时，将会放过所有 content-type 为 `application/json` 的请求
      queryName: '_csrf', // 通过 query 传递 CSRF token 的默认字段为 _csrf
      bodyName: '_csrf', // 通过 body 传递 CSRF token 的默认字段为 _csrf
    },

  };
//跨域配置
  config.cors = {  
    // {string|Function} 
    origin: '*',//不加入此 ionic pc会报404 app 未知道
    // origin:'http://localhost:7001', //加入此 手机端会报跨域
    allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',
    credentials: true //post跨域请求问题加入此 https://cnodejs.org/topic/59780bba68aa87c774e5ebf7
  }

 
  /** 自定义配置项
   * 可以在控制器读取到此配置项,可以用于 微信公众号等配置
   *  console.log(this.ctx.app.config.wechat_config)
   */
  config.wechat_config = {
    token: 'XXXXXX',
    appid: 'XXXXXXX',
    encodingAESKey: 'XXXXXX'
  };
//验证配置
  config.joi = {
    options: {},
    locale: {
      'zh-cn': {}
    },
    throw: false,
    throwHandle: (error) => {
      console.log("throwHandle>>>>", error);
      return error;
    }, // throw:true 时,抛出的错误做格式化处理
    errorHandle: (error) => {
      console.log("errorHandle---", error);
      return error;
    }, // throw:false 时错误会作为结果返回,默认 {error,value},可对错误格式化939
    resultHandle: (result) => {
      return result;
    }, //返回结果做处理的函数,默认返回 {error,value}

  };
//文件上传配置
  config.multipart = {
    // mode: 'stream',  
     mode: 'file',//前端用form-data,则egg用此模式才能
    fileSize: '10mb', //'50mb', '10000Kb'
    whitelist: ['.jpg', '.jpeg', // image/jpeg
      '.png', // image/png, image/x-png
      '.gif',
    ],
   
  };


  config.customLogger = {
    log: {
      file: path.join(appInfo.root, 'logs/debug.log'),
      formatter(meta) {
        let msg ='' ;
        if(typeof meta.message =="string"){
          msg = meta.message;
        }else{
          msg= JSON.stringify(meta.message);
        }
        return `${meta.level}|${meta.date}|${msg}`;
      },
    },
  };

  return config;
};

 
 